home *** CD-ROM | disk | FTP | other *** search
/ Cream of the Crop 26 / Cream of the Crop 26.iso / os2 / te2_134t.zip / TE2INST.003 / PlayWAVs.scr < prev    next >
Text File  |  1997-07-03  |  5KB  |  118 lines

  1. /* --------------------------------------------------------------------- */
  2. /* PlayWAVs.scr - A TE/2 REXX Syntax Script                              */
  3. /*                Copyright 1994 by Oberon Software                      */
  4. /*                All rights reserved                                    */
  5. /*                                                                       */
  6. /* Notes: This sample script illustrates the use of:                     */
  7. /*          1. The TE/2 PlayFile() function                              */
  8. /*          2. The TE/2 PopupMenu() function                             */
  9. /*          3. The use of REXXUTIL with TE/2 Scripts                     */
  10. /*          4. Error handling in REXX Syntax TE/2 scripts                */
  11. /*                                                                       */
  12. /* Notes: If your MultiMedia SOUNDS directory is not C:\MMOS2\SOUNDS     */
  13. /*        you will need to edit the 'SoundPath' variable at the          */
  14. /*        beginning of this script.                                      */
  15. /* --------------------------------------------------------------------- */
  16.  
  17. /* Variables used ------------------------------------------------------ */
  18. Soundpath   = 'C:\MMOS2\SOUNDS' /* edit this if your system is different */
  19. SoundFile.  = ''
  20. SoundFile.0 = 0
  21. MnuTitle    = 'Play WAV File'
  22. MnuTop      = 5
  23. MnuLeft     = 20
  24. MnuAttr     = 0x1f
  25. MnuHiAttr   = 0x71
  26. MnuItem     = ''
  27.  
  28. /* Load REXXUTIL Functions --------------------------------------------- */
  29. call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
  30. call SysLoadFuncs
  31.  
  32. /* Setup Error handling ------------------------------------------------ */
  33. signal on error name errproc
  34.  
  35. /* Main Program -------------------------------------------------------- */
  36. call SysFileTree SoundPath||'\*.WAV', 'SoundFile',  'F'
  37. if SoundFile.0 = 0 then
  38.   say 'No WAV file present in directory ['SoundPath']'
  39. else
  40.   call PlayFiles
  41. exit 0
  42.  
  43. /* Subroutines --------------------------------------------------------- */
  44. PlayFiles:
  45.   /* If SoundFile.0 is 9 or less we do a simple menu */
  46.   /* If it's greater than 9, we have to be tricky    */
  47.   if SoundFile.0 <= 9 then
  48.     do
  49.       MnuItem = '/Quit/'
  50.       do i = 1 to SoundFile.0
  51.         MnuItem = MnuItem||substr(SoundFile.i,38)||'/'
  52.       end
  53.       k = 1
  54.       do forever
  55.         'PopupMenu("'MnuTitle'", "'MnuItem'", 'mnuTop', 'mnuLeft', 'mnuAttr', 'mnuHiAttr', 'k')'
  56.         k = rc
  57.         if k <= 1 then leave
  58.         j = k - 1
  59.  
  60.         /* See comment below about this use of sprintf() */
  61.         'sprintf("[%lu", OpenDialog(6, 4, 11, 76, DLogNormAttr))'
  62.         h = substr(rc,2)
  63.  
  64.         'StrPut(8, 6, DLogNormAttr, "Playing file: %s", "'substr(SoundFile.j,38)'")'
  65.         'PlayFile("'substr(SoundFile.j,38)'", 1)'
  66.         'CloseDialog('h')'
  67.       end
  68.     end
  69.   else
  70.     do
  71.       iFirst = 1
  72.       do forever
  73.         MnuItem = '/Quit/'
  74.         iLast = iFirst + 7
  75.         if iLast > SoundFile.0 then iLast = SoundFile.0
  76.         xLast = (iLast - iFirst) + 2
  77.         do i = iFirst to iLast
  78.           MnuItem = MnuItem||substr(SoundFile.i,38)||'/'
  79.         end
  80.         MnuItem = MnuItem||'More.../'
  81.         k = 1
  82.         do forever
  83.           'PopupMenu("'MnuTitle'", "'MnuItem'", 'mnuTop', 'mnuLeft', 'mnuAttr', 'mnuHiAttr', 'k')'
  84.           k = rc
  85.           if k <= 1 | k > xLast then leave
  86.           j = iFirst + (k - 2)
  87.  
  88.           /* ---------------------------------------------------------- */
  89.           /* This use of sprintf() is to workaround REXX's handling of  */
  90.           /* large, unsigned numbers such as the dialog handle.  We     */
  91.           /* 'fool' REXX into thinking that it's a string by prepending */
  92.           /* a bogus character to the number and then we remove it to   */
  93.           /* make it numeric again.                                     */
  94.  
  95.           'sprintf("[%lu", OpenDialog(6, 4, 11, 76, DLogNormAttr))'
  96.           h = substr(rc,2)
  97.           /* ---------------------------------------------------------- */
  98.  
  99.           'StrPut(8, 6, DLogNormAttr, "Playing file: %s", "'substr(SoundFile.j,38)'")'
  100.           'PlayFile("'substr(SoundFile.j,38)'", 1)'
  101.           'CloseDialog('h')'
  102.         end
  103.         if k <= 1 then leave
  104.         iFirst = iFirst + 8
  105.         if iFirst > SoundFile.0 then iFirst = 1
  106.       end
  107.     end
  108.   return
  109.  
  110. /* Error handler ------------------------------------------------------- */
  111. errproc:
  112.   TE2rc = rc
  113.   say '!! Error in TE/2 call'
  114.   say 'rc          =' TE2rc
  115.   say 'line number =' sigl
  116.   say 'instruction = ['sourceline(sigl)']'
  117.   exit 1
  118.